package com.my.study.juc.basic;

/**
 * 单例模式
 *
 * @author: yidujun
 * @create: 2021/04/12 14:06
 */
public class Singleton {

    /**
     * 第一种情况：未使用关键词 volatile，可能会出现null指针异常
     * 第二种情况：使用关键词 volatile，禁止指令重排
     */
    private static volatile Singleton singleton;

    private Singleton() {}

    public static Singleton getInstance() {
        if (singleton == null) {
            synchronized (Singleton.class) {
                if (singleton == null) {
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}
